package com.iflytek.controller;

import com.iflytek.common.Result;
import com.iflytek.dto.OrderGoodsDTO;
import com.iflytek.dto.PageDTO;
import com.iflytek.service.OrderGoodsService;
import com.iflytek.vo.OrderGoodsVO;
import com.iflytek.vo.PageVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 *
 * @author h_t
 * @since 2023-09-23
 */
@RestController
@RequestMapping("/api/orderGoods")
public class OrderGoodsController{
    @Autowired
    public OrderGoodsService orderGoodsService;

    /**
     * 获取所有订单与商品的关系列表
     * @return
     */
    @ApiOperation("获取所有订单与商品的关系列表")
    @GetMapping("")
    public Result<List<OrderGoodsVO>> findAll(){
        return orderGoodsService.findAll();
    }

    /**
     * 保存订单与商品关系信息
     * @param orderGoodsDTO
     * @return
     */
    @ApiOperation("保存订单与商品关系信息")
    @PostMapping("")
    public Result<Boolean> saveOrderGoods(@RequestBody OrderGoodsDTO orderGoodsDTO){
        return orderGoodsService.saveOrderGoods(orderGoodsDTO);
    }

    /**
     *  更新订单与商品关系信息
     * @param orderGoodsDTO
     * @return
     */
    @ApiOperation("更新订单与商品关系信息")
    @PutMapping("")
    public Result<Boolean> updateOrderGoods(@RequestBody OrderGoodsDTO orderGoodsDTO){
        return orderGoodsService.updateOrderGoods(orderGoodsDTO);
    }

    /**
     * 分页获取关系信息
     * @param pageDTO
     * @return
     */
    @ApiOperation("分页获取关系信息")
    @GetMapping("/findPage")
    public Result<PageVO<OrderGoodsVO>> findPage( PageDTO pageDTO){
        return orderGoodsService.findPage(pageDTO);
    }

    /**
     * 根据id获取关系信息
     * @param id
     * @return
     */
    @ApiOperation("根据id获取关系信息")
    @PostMapping("/findById/{id}")
    public Result<OrderGoodsVO> findById(@PathVariable("id") Integer id){
        return orderGoodsService.findById(id);
    }

    /**
     * 根据id删除订单与商品关系
     * @param id
     * @return
     */
    @ApiOperation("根据id删除订单与商品关系")
    @DeleteMapping("{id}")
    public Result<Boolean> delete(@PathVariable("id") Integer id){
        return  orderGoodsService.delete(id);
    }
}